-- *****************************************************************
-- REDSTONE-DHCP-MIB
--
-- Redstone Communications Inc. Enterprise MIB
-- DHCP MIB
--
-- Copyright 1999 Redstone Communications, Incorporated.
-- All Rights Reserved.
-- *****************************************************************

REDSTONE-DHCP-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, 
    OBJECT-TYPE, 
    IpAddress,
    Counter32
        FROM SNMPv2-SMI

    RowStatus
        FROM SNMPv2-TC

    MODULE-COMPLIANCE, 
    OBJECT-GROUP  
        FROM SNMPv2-CONF

    rsMgmt
                FROM REDSTONE-SMI

    RsEnable
        FROM REDSTONE-TC;


rsDhcpMIB MODULE-IDENTITY
    LAST-UPDATED "9912310000Z"
    ORGANIZATION "Redstone Communications Inc."
        CONTACT-INFO
        "
        Redstone Communications, Inc.
                5 Carlisle Road
        Westford MA 01886
        USA
        Tel:    +1-978-692-1999
                Email:  mib@redstonecom.com
        "
        DESCRIPTION
                "The DHCP MIB for the
                Redstone Communications Inc. enterprise."
        REVISION      "9912310000Z"
        DESCRIPTION
                "Really 1-Feb-2000. Added additional error/discard statistics for
        both DHCP Relay and Proxy."
        REVISION      "9911150000Z"
        DESCRIPTION
                "Added support for DHCP Proxy Client under rsDhcpProxyClient node."
        REVISION      "9906010000Z"
        DESCRIPTION
                "Initial version of this MIB module."
    ::= { rsMgmt 22 }


-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Textual conventions
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- No textual conventions are defined in this MIB



-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Managed object groups
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


rsDhcpObjects       OBJECT IDENTIFIER ::= {rsDhcpMIB 1}
rsDhcpRelay         OBJECT IDENTIFIER ::= {rsDhcpObjects 1}
rsDhcpProxy         OBJECT IDENTIFIER ::= {rsDhcpObjects 2}

-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Managed objects for DHCP Relay
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

--
-- DHCP Relay Scalars
-- 
rsDhcpRelayScalars  OBJECT IDENTIFIER ::= {rsDhcpRelay 1}

rsDhcpRelayAgentInfoEnable OBJECT-TYPE
    SYNTAX      RsEnable
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Enable/disable use of the DHCP Relay Agent Info option."
    ::= { rsDhcpRelayScalars 1 }


rsDhcpRelayBadMessages OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of DHCP Relay messages received by this agent,
        that were discarded because of apparent corruption."
    ::= { rsDhcpRelayScalars 2 }

rsDhcpRelayUnknownMessages OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of DHCP Relay messages received by this agent,
        that were discarded because they contained information
        or options not recognized by this agent."
    ::= { rsDhcpRelayScalars 3 }

rsDhcpRelayAgentInfoAlreadyPresents OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of DHCP requests discarded because they already contained
        the Agent Info option when this agent expected to insert it."
    ::= { rsDhcpRelayScalars 4 }

rsDhcpRelayGatewayAddrSpoofs OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of DHCP requests discarded because the gateway IP address
        field already contained this agent's address."
    ::= { rsDhcpRelayScalars 5 }


--
-- DHCP Relay Server Table
--

rsDhcpRelayServerTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsDhcpRelayServerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The (conceptual) table listing the DHCP Relay servers."
    ::= { rsDhcpRelay 2 }

rsDhcpRelayServerEntry OBJECT-TYPE
    SYNTAX      RsDhcpRelayServerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry (conceptual row) representing a DHCP Relay server."
    INDEX      { rsDhcpRelayServerAddress }
    ::= { rsDhcpRelayServerTable 1 }

RsDhcpRelayServerEntry ::= SEQUENCE {
    rsDhcpRelayServerAddress                IpAddress,
    rsDhcpRelayServerRowStatus              RowStatus
}

rsDhcpRelayServerAddress OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The IP address of the DHCP server to which DHCP
        requests received from attached DHCP clients are
        forwarded."
    ::= { rsDhcpRelayServerEntry 1 }

rsDhcpRelayServerRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Supports 'createAndGo' and 'destroy' only."
    ::= { rsDhcpRelayServerEntry 2 }


-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Managed objects for DHCP Proxy
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

rsDhcpProxyClient   OBJECT IDENTIFIER ::= {rsDhcpProxy 1}
rsDhcpProxyServer   OBJECT IDENTIFIER ::= {rsDhcpProxy 2}    -- reserved for future use

--
-- DHCP Proxy Client Scalars
-- 
rsDhcpProxyClientScalars  OBJECT IDENTIFIER ::= {rsDhcpProxyClient 1}

rsDhcpProxyClientUnknownServers OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Total number of DHCP Proxy messages received from servers not listed
        in the rsDhcpProxyClientServerTable."
    ::= { rsDhcpProxyClientScalars 1 }


--
-- DHCP Proxy Client Server Table
--

rsDhcpProxyClientServerTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsDhcpProxyClientServerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The (conceptual) table listing the DHCP Proxy servers
        known to the client."
    ::= { rsDhcpProxyClient 2 }

rsDhcpProxyClientServerEntry OBJECT-TYPE
    SYNTAX      RsDhcpProxyClientServerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry (conceptual row) representing a DHCP Proxy server
        known to the client."
    INDEX      { rsDhcpProxyClientServerAddress }
    ::= { rsDhcpProxyClientServerTable 1 }

RsDhcpProxyClientServerEntry ::= SEQUENCE {
    rsDhcpProxyClientServerAddress                IpAddress,
    rsDhcpProxyClientServerRowStatus              RowStatus,

    rsDhcpProxyClientServerAdminStatus            INTEGER,
    rsDhcpProxyClientServerOperStatus             INTEGER,

    rsDhcpProxyClientServerLeases                 Counter32,
    rsDhcpProxyClientServerDiscovers              Counter32,
    rsDhcpProxyClientServerOffers                 Counter32,
    rsDhcpProxyClientServerRequests               Counter32,
    rsDhcpProxyClientServerAcks                   Counter32,
    rsDhcpProxyClientServerNaks                   Counter32,
    rsDhcpProxyClientServerDeclines               Counter32,
    rsDhcpProxyClientServerReleases               Counter32,
    rsDhcpProxyClientServerInforms                Counter32,
    rsDhcpProxyClientServerBadMessages            Counter32,
    rsDhcpProxyClientServerUnknownMessages        Counter32
}

rsDhcpProxyClientServerAddress OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The IP address of a DHCP server with which DHCP
         transactions are conducted by this client."
    ::= { rsDhcpProxyClientServerEntry 1 }

rsDhcpProxyClientServerRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Supports 'createAndGo' and 'destroy' only."
    ::= { rsDhcpProxyClientServerEntry 2 }

rsDhcpProxyClientServerAdminStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    disable(0),
                    drain(1),
                    enable(2)
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Permits configuration of the client's operation status with respect
        to this server:
        
        disable     Bar the client from using this server to obtain
                    new address leases; and cause any leases from that server,
                    that are currently in use by the client, to be released.

        drain       Bar the client from using this server to obtain
                    new address leases; but permit any leases from that server,
                    that are currently in use by the client, to remain
                    in use until they expire naturally.

        enabled     Allow the client to use the server to obtain new address 
                    leases.

        Implementations that don't support administrative control of the server
        always report the value of enable(2), and disallow setting this object to
        any other value."
    ::= { rsDhcpProxyClientServerEntry 3 }

rsDhcpProxyClientServerOperStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    disabled(0),
                    draining(1),
                    enabled(2)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Reports the client's current operation status with respect
        to this server:
        
        disabled    The client is barred from using this server to obtain
                    new address leases; and any leases from that server,
                    that were in use by the client, have been released.

        draining    The client is barred from using this server to obtain
                    new address leases, but one or more leases from that 
                    server, that are in use by the client, will remain
                    in use until they expire naturally.

        enabled     The client may use the server to obtain new address 
                    leases, and may have one or more leases currently in use.
        
        Implementations that don't support administrative control of the server
        always report the value enabled(2)."
    ::= { rsDhcpProxyClientServerEntry 4 }

rsDhcpProxyClientServerLeases OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Total number of address leases granted to the client by this server
        (including those that have expired).

        The number of active leases from this server is determined by subtracting
        the value of rsDhcpProxyClientServerReleases from the value of this object."
    ::= { rsDhcpProxyClientServerEntry 5 }

rsDhcpProxyClientServerDiscovers OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of DHCP Discovers directed (i.e. nonbroadcast) by the client to this server."
    ::= { rsDhcpProxyClientServerEntry 6 }

rsDhcpProxyClientServerOffers OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of DHCP Offers received by the client from this server."
    ::= { rsDhcpProxyClientServerEntry 7 }

rsDhcpProxyClientServerRequests OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of DHCP Requests sent by the client to this server."
    ::= { rsDhcpProxyClientServerEntry 8 }

rsDhcpProxyClientServerAcks OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of DHCP Acks received by the client from this server."
    ::= { rsDhcpProxyClientServerEntry 9 }

rsDhcpProxyClientServerNaks OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of DHCP Naks received by the client from this server."
    ::= { rsDhcpProxyClientServerEntry 10 }

rsDhcpProxyClientServerDeclines OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of DHCP Declines sent by the client to this server."
    ::= { rsDhcpProxyClientServerEntry 11 }

rsDhcpProxyClientServerReleases OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of DHCP Releases sent by the client to this server."
    ::= { rsDhcpProxyClientServerEntry 12 }

rsDhcpProxyClientServerInforms OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of DHCP Informs sent by the client to this server."
    ::= { rsDhcpProxyClientServerEntry 13 }

rsDhcpProxyClientServerBadMessages OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of DHCP Proxy messages received by the client from this server,
        that were discarded because of apparent corruption."
    ::= { rsDhcpProxyClientServerEntry 14 }

rsDhcpProxyClientServerUnknownMessages OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of DHCP Proxy messages received by the client from this server,
        that were discarded because they contained information or options
        not recognized by the client."
    ::= { rsDhcpProxyClientServerEntry 15 }


-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Notification control objects
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- No notifications are defined in this MIB. Placeholder follows.

-- rsDhcpTrapControl      OBJECT IDENTIFIER ::= { rsDhcpMIB 2 }



-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Notifications
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- No notifications are defined in this MIB. Placeholder follows.

-- The following OBJECT IDENTIFIER is used to define SNMPv2 
-- Notifications that are easily translated into SNMPv1 Traps.

-- rsDhcpTraps            OBJECT IDENTIFIER ::= { rsDhcpMIB 0 }



-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Conformance information
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

rsDhcpMIBConformance
             OBJECT IDENTIFIER ::= { rsDhcpMIB 4 }
rsDhcpMIBCompliances
             OBJECT IDENTIFIER ::= { rsDhcpMIBConformance 1 }
rsDhcpMIBGroups
             OBJECT IDENTIFIER ::= { rsDhcpMIBConformance 2 }


-- compliance statements

rsDhcpRelayCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for systems supporting DHCP Relay."
    MODULE  -- this module
    MANDATORY-GROUPS { rsDhcpRelayGroup, rsDhcpProxyGroup }
    ::= { rsDhcpMIBCompliances 1 }

rsDhcpProxyCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for systems supporting DHCP Proxy."
    MODULE  -- this module
    MANDATORY-GROUPS { rsDhcpProxyGroup }
    ::= { rsDhcpMIBCompliances 2 }


-- units of conformance

rsDhcpRelayGroup OBJECT-GROUP
    OBJECTS {
        rsDhcpRelayAgentInfoEnable,
        rsDhcpRelayBadMessages,
        rsDhcpRelayUnknownMessages,
        rsDhcpRelayAgentInfoAlreadyPresents,
        rsDhcpRelayGatewayAddrSpoofs,

        rsDhcpRelayServerRowStatus
    }
    STATUS      current
    DESCRIPTION
        "The basic collection of objects providing management
        of DHCP Relay functionality."
    ::= { rsDhcpMIBGroups 1 }

rsDhcpProxyGroup OBJECT-GROUP
    OBJECTS {
        rsDhcpProxyClientUnknownServers,

        rsDhcpProxyClientServerRowStatus,
        rsDhcpProxyClientServerAdminStatus,
        rsDhcpProxyClientServerOperStatus,

        rsDhcpProxyClientServerLeases,
        rsDhcpProxyClientServerDiscovers,
        rsDhcpProxyClientServerOffers,
        rsDhcpProxyClientServerRequests,
        rsDhcpProxyClientServerAcks,
        rsDhcpProxyClientServerNaks,
        rsDhcpProxyClientServerDeclines,
        rsDhcpProxyClientServerReleases,
        rsDhcpProxyClientServerInforms,
        rsDhcpProxyClientServerBadMessages,
        rsDhcpProxyClientServerUnknownMessages
    }
    STATUS      current
    DESCRIPTION
        "The basic collection of objects providing management
        of DHCP Proxy functionality."
    ::= { rsDhcpMIBGroups 2 }

END